當 contract 越寫越大、越寫越多時,我們會發現有很多重複的程式碼出現,如果我們每次在 function 裡面要使用到重複的程式碼時就要複製一份,那整個 contract 將會越來越肥大,降低可讀性。因此這邊要介紹 library 幫助我們把常用的 function & type 抽離出去成為一個 library 來使用。
本日合約:
pragma solidity ^0.4.25;
library Set {
struct Data {
mapping(int => bool) data;
}
function Insert(Data storage self, int key) public returns (bool) {
if (self.data[key])
return false; // Key exists.
self.data[key] = true;
return true;
}
function Remove(Data storage self, int key) public returns (bool) {
if (!self.data[key])
return false; // Key does not exist.
self.data[key] = false;
return true;
}
function Contain(Data storage self, int key) public view returns (bool) {
return self.data[key];
}
}
contract Main {
Set.Data set;
function insert(int key) public returns (bool) {
return Set.Insert(set, key);
}
function remove(int key) public returns (bool) {
return Set.Remove(set, key);
}
function contain(int key) public view returns (bool) {
return Set.Contain(set, key);
}
}
本日影片:
https://youtu.be/vmgevxf7vCo
Smart Contract 實戰教學播放清單:
https://www.youtube.com/playlist?list=PLHmOMPRfmOxSJcrlwyandWYiuP9ZAMYoF